<?php

/**
 * Description of DbSjabloon
 * 
 * Dit is de Database klasse van het sjabloon gedeelte. Hierin wordt
 * het sjabloon gedeelte in de database opgeslagen
 *
 * @author Randy
 * @version 1.0
 * 
 * @category Cofely - Veiligheid & Gezondheids plan sjabloon
 * @uses Database
 * 
 */
//require_once '../defs/constants.php';
require_once FILE_DB_DATABASE;

class DbSjabloon extends Database {

    /**
     * De lijst met risicoaandachtsgebieden 
     * @var String $risicoaandachtsgebiedenlijst 
     */
    private $risicoaandachtsgebiedenlijst = '';

    /**
     * Het id van het sjabloon die later gevuld wordt nadat er een sjabloon opgeslagen is
     * @var int $sjabloon_id
     */
    private $sjabloon_id = '';

    /**
     * De beschrijving van het sjabloon die de klant zelf heeft ingevuld
     * @var String $sjabloon_beschrijving
     */
    private $sjabloon_beschrijving = '';

    /**
     * De preventieve maatregel van het sjabloon. Ik weet niet wat het doet. Het is namelijk door Trinco geschreven
     * @var type $preventieve_maatregel
     */
    private $preventieve_maatregel = '';

    /**
     * De preventieve actie id array. Ik weet niet wat het doet. Het is namelijk door Trinco geschreven
     * @var array $array_actie_id
     */
    private $array_actie_id = array();

    /**
     * De status van het sjabloon
     * @var String $status
     */
    private $status = '';

    /**
     * De constructor functie van de database klasse
     * @param int $id 
     */
    public function __construct($id = '') {
        //if (DEBUG_LVL & DEBUG_LVL_CLASS) echo __FILE__ . __LINE__ .': ';

        parent::__construct();
        // If maatregel id get maatregel data
        if (!empty($id)) {
            $this->DbGetSjabloonData($id);
        }
    }

    /**
     * Voegt een nieuw risicoaandachtsgebied toe aan de lijst 
     */
    public function addRisicoaandachtsgebied() {

        $this->risicoaandachtsgebiedenlijst[] = new TplRisicoaandachtsgebied();
    }
    
    public function saveAsPreview($versie_id){
        $query = "UPDATE `tpl_sjabloon` SET `status`= 'preview' WHERE `sjabloon_versie_id`=" . $versie_id;
        mysql_query($query) or die (mysql_error());
    }

    /**
     * Sla het sjabloon versie en de bijbehorende beschrijving op in de tpl_sjabloon tabel.
     * 
     * @param type $sjabloon_versie_id
     * @param type $sjabloon_beschrijving
     * @return boolean 
     */
    public function save($sjabloon_versie_id, $sjabloon_beschrijving, $status) {

        /**
         * @todo check maatregel
         */
        $query = "INSERT INTO `tpl_sjabloon` (`sjabloon_versie_id`, `sjabloon_beschrijving`, `sjabloon_id`, `status`) VALUES ('" . $sjabloon_versie_id . "', '" . $sjabloon_beschrijving . "' , '" . $this->sjabloon_id . "' , '" . $status . "' )";
        // Als de Query mislukt geef je een foutmelding, anders ga je door.

        if (!$this->dbquery($query)) {

            echo(DBSJABLOON_ERR0R_INSERT . __FILE__ . " : " . __LINE__ . "<br />" . $query);
            return false;
        }
        // Nadat de query is gelukt zet je het laatst ingevulde id in $this->sjabloon_id met mysql_insert_id
        $this->sjabloon_beschrijving = $sjabloon_beschrijving;
        $this->sjabloon_id = mysql_insert_id();
    }

    /**
     * Getter van sjabloon_id
     * @return int $sjabloon_id
     */
    public function getSjabloon_id() {

        return $this->sjabloon_id;
    }

    /**
     * Getter van Geintificeerde_risico_naam_id
     * @return int $geintificeerde_risico_naam_id
     */
    public function getGeintificeerde_risico_naam_id() {

        return $this->geintificeerde_risico_naam_id;
    }

    /**
     * Getter van preventieve_maatregel
     * @return String $preventieve_maatregel
     */
    public function getPreventieve_maatregel() {

        return $this->preventieve_maatregel;
    }

    /**
     * Getter van status
     * @return String $status
     */
    public function getStatus() {
        return $this->status;
    }

    /**
     * Setter van status
     * @param String $status 
     */
    public function setStatus($status) {
        $this->status = $status;
    }

    /**
     * Deze functie haalt de laatste status op van een sjabloon / draft / preview
     * @return String status 
     */
    public function getLaatsteStatus() {
        //Haal de laatste status op
        $query = mysql_query("SELECT * FROM `tpl_sjabloon` ORDER BY `sjabloon_id` DESC LIMIT 1");
        //Maak een array van de uitkomst van de query
        $status = mysql_fetch_array($query);
        //Zorg dat de status wordt ingevuld
        $this->status = $status['status'];
        return $this->status;
    }

    /**
     * De update functie van sjabloon
     * @param type $nieuweactie
     * @return boolean 
     * @todo Zodanig aanpassen dat deze werkt
     */
    public function updateMaatregel($nieuweactie) {

        // check of actie_id bestaat of return false
        if (empty($this->Maatregel_id))
            return false;
        // update actie in database

        $query = "UPDATE 'maatregel' SET maatregel = '" . $nieuweactie . "' WHERE maatregel_id = '" . $this->maatregel_id . "'";
        mysql_query($query);
        $this->maatregel = $nieuweactie;

        if (DEBUG_LVL & DEBUG_LVL_QUERY)
            echo __FILE__ . ' ' . __LINE__ . ': ' . $query . '<br />';
        return true;
    }

    /**
     * De update status die de status van een sjabloon dus gaat updaten
     * @param String $status 
     */
    public function updateStatus($status) {

        $pre_query = "SELECT MAX(`sjabloon_id`) FROM `tpl_sjabloon`";

        $pre_query2 = mysql_query($pre_query);

        $laatsteversienummer = mysql_fetch_array($pre_query2);

        $query = "UPDATE  `cofely`.`tpl_sjabloon` SET  `status` =  '" . $status . "' WHERE  '" . $laatsteversienummer['0'] . "' AND `status` = 'draft'";

        if (!$this->dbquery($query)) {
            echo "Er ging iets mis in de update functie in " . __FILE__ . " op regel " . __LINE__;
        }
    }

    public function getAlleSjablonen() {

        $query = 'SELECT vgp_versie.versie_nr, date(vgp_versie.datum), tpl_sjabloon.sjabloon_beschrijving, tpl_sjabloon.status FROM  `tpl_sjabloon` INNER JOIN  `vgp_versie` ON tpl_sjabloon.sjabloon_versie_id = vgp_versie.versie_id WHERE tpl_sjabloon.status =  "final"';

        $uitkomst = mysql_query($query) or die (mysql_error());
        $return_array = array();

        while ($resultaat = mysql_fetch_array($uitkomst)) {
            $return_array[] = $resultaat;
        }

        return $return_array;
    }

    public function getLaatsteDraft() {

        $query = "SELECT vgp_versie.versie_nr, date(vgp_versie.datum), tpl_sjabloon.sjabloon_beschrijving, tpl_sjabloon.status FROM  `tpl_sjabloon` INNER JOIN  `vgp_versie` ON tpl_sjabloon.sjabloon_versie_id = vgp_versie.versie_id WHERE vgp_versie.versie_nr LIKE  '%.%' ORDER BY vgp_versie.versie_id DESC LIMIT 0, 1";

        $uitkomst = mysql_query($query);
        $return_array = array();

        while ($resultaat = mysql_fetch_array($uitkomst)) {
            $return_array[] = $resultaat;
        }

        return $return_array;
    }

    /**
     * Getter van de maatregel array
     * @return int $array_maatregel_id 
     */
    public function getMaatregelArray() {
        return $this->array_maatregel_id;
    }

    public function getSjabloon($versie_nr) {
        $return_array = array();
        //Versie gedeelte
        $query_versie = mysql_query("SELECT `vgp_versie`.`versie_id`, `vgp_versie`.`versie_nr`, `vgp_versie`.`beschrijving` FROM `vgp_versie` WHERE `versie_nr` ='" . $versie_nr . "'");
        $fetch_versie = mysql_fetch_array($query_versie);
        $versie_id = $fetch_versie['versie_id'];
        //Sjabloon gedeelte
        $query_sjabloon = mysql_query("SELECT `tpl_sjabloon`.`sjabloon_beschrijving`, `tpl_sjabloon`.`status`, `tpl_sjabloon`.`sjabloon_id` FROM `tpl_sjabloon` WHERE `sjabloon_versie_id` ='" . $versie_id . "'");
        $fetch_sjabloon = mysql_fetch_array($query_sjabloon);
        $sjabloon_id = $fetch_sjabloon['sjabloon_id'];
        //Risicoaandachtsgebied versie gedeelte
        //ragv staat hier dus voor Risco-Aandachts-Gebied-Versie
        $query_ragv = mysql_query("SELECT `tpl_risico_aandachtsgebied_versie`.`risico_aandachtsgebied_id` FROM `tpl_risico_aandachtsgebied_versie` WHERE `sjabloon_versie_id`='" . $versie_id . "'") or die(mysql_error());
        $lvl1 = 0;
        while ($fetch_ragv = mysql_fetch_array($query_ragv)) {
            $return_array[$lvl1][LVL_DATA_RAGV] = $fetch_ragv;
            $ragv_id = $fetch_ragv['risico_aandachtsgebied_id'];
            //Risicoaadnachtsgebied gedeelte
            //rag staat hier dus voor een Risico-Aandachts-Gebied
            $query_rag = mysql_query("SELECT `tpl_risico_aandachtsgebied`.`risico_aandachtsgebied_id`, `tpl_risico_aandachtsgebied`.`risico_aandachtsgebied_naam`, `tpl_risico_aandachtsgebied`.`risico_aandachtsgebied_beschrijving` FROM `tpl_risico_aandachtsgebied` WHERE `risico_aandachtsgebied_id`='" . $ragv_id . "'") or die(mysql_error());
            $lvl2 = 0;
            while ($fetch_rag = mysql_fetch_array($query_rag)) {
                $return_array[$lvl1][$lvl2][LVL_DATA_RAG] = $fetch_rag;
                $rag_id = $fetch_rag['risico_aandachtsgebied_id'];
                //Risicogebied versie
                //rgv staat hier dus voor een Risico-Gebied-Versie
                $query_rgv = mysql_query("SELECT `tpl_risico_gebied_versie`.`risico_gebied` FROM `tpl_risico_gebied_versie` WHERE `risico_aandachtsgebied_id`='" . $rag_id . "' AND `sjabloon_versie_id`='" . $versie_id . "'") or die(mysql_error());
                $lvl3 = 0;
                while ($fetch_rgv = mysql_fetch_array($query_rgv)) {
                    $return_array[$lvl1][$lvl2][$lvl3][LVL_DATA_RGV] = $fetch_rgv;
                    $rgv_id = $fetch_rgv['risico_gebied'];
                    //Risicogebied gedeelte
                    //rg staat hier dus voor Risico-Gebied
                    $query_rg = mysql_query("SELECT `tpl_risico_gebied`.`risico_gebied_id`, `tpl_risico_gebied`.`risico_gebied_naam`, `tpl_risico_gebied`.`risico_gebied_beschrijving` FROM `tpl_risico_gebied` WHERE `risico_gebied_id`='" . $rgv_id . "' AND `risico_aandachtsgebied_id`='" . $rag_id . "'") or die(mysql_error());
                    $lvl4 = 0;
                    while ($fetch_rg = mysql_fetch_array($query_rg)) {
                        $return_array[$lvl1][$lvl2][$lvl3][$lvl4][LVL_DATA_RG] = $fetch_rg;
                        $rg_id = $fetch_rg['risico_gebied_id'];
                        //Risico versie gedeelte
                        //rv staat hier dus voor Risico-Versie
                        $query_rv = mysql_query("SELECT `tpl_risico_versie`. `risico_id` FROM  `tpl_risico_versie` WHERE `risico_gebied_id`='" . $rg_id . "'AND `sjabloon_versie_id`='" . $versie_id . "'") or die(mysql_error());
                        $lvl5 = 0;
                        while ($fetch_rv = mysql_fetch_array($query_rv)) {
                            $return_array[$lvl1][$lvl2][$lvl3][$lvl4][$lvl5][LVL_DATA_RV] = $fetch_rv;
                            $rv_id = $fetch_rv['risico_id'];
                            //Risico gedeelte
                            //r staat hier dus voor Risico
                            $query_r = mysql_query("SELECT `tpl_risico`.`risico_id`, `tpl_risico`.`risico_naam`, `tpl_risico`.`risico_beschrijving` FROM  `tpl_risico` WHERE `risico_gebied_id`='" . $rg_id . "'AND `risico_id`='" . $rv_id . "'") or die(mysql_error());
                            $lvl6 = 0;
                            while ($fetch_r = mysql_fetch_array($query_r)) {
                                $return_array[$lvl1][$lvl2][$lvl3][$lvl4][$lvl5][$lvl6][LVL_DATA_R] = $fetch_r;
                                $r_id = $fetch_r['risico_id'];
                                //Maatregel versie gedeelte
                                //pmv staat hier dus voor Preventieve-Maatregel-Versie
                                $query_pmv = mysql_query("SELECT `tpl_preventieve_maatregel_versie`.`preventieve_maatregel_id` FROM `tpl_preventieve_maatregel_versie` WHERE `risico_id`='" . $r_id . "'AND `sjabloon_versie_id`='" . $versie_id . "'") or die(mysql_error());
                                $lvl7 = 0;
                                while ($fetch_pmv = mysql_fetch_array($query_pmv)) {
                                    $return_array[$lvl1][$lvl2][$lvl3][$lvl4][$lvl5][$lvl6][$lvl7][LVL_DATA_PMV] = $fetch_pmv;
                                    $pmv_id = $fetch_pmv['preventieve_maatregel_id'];
                                    // Maatregel gedeelte
                                    //pm staat hier dus voor Preventieve-Maatregel
                                    $query_pm = mysql_query("SELECT `tpl_preventieve_maatregel`.`preventieve_maatregel_naam`, `tpl_preventieve_maatregel`.`preventieve_maatregelbeschrijving` FROM  `tpl_preventieve_maatregel` WHERE `preventieve_maatregel_id`='" . $pmv_id . "'") or die(mysql_error());
                                    $lvl8 = 0;
                                    while ($fetch_pm = mysql_fetch_array($query_pm)) {
                                        $return_array[$lvl1][$lvl2][$lvl3][$lvl4][$lvl5][$lvl6][$lvl7][$lvl8][LVL_DATA_PM] = $fetch_pm;
                                        $lvl8++;
                                    }
                                    $lvl7++;
                                }
                                $lvl6++;
                            }
                            $lvl5++;
                        }
                        $lvl4++;
                    }
                    $lvl3++;
                }
                $lvl2++;
            }
            $lvl1++;
        }

        return($return_array);
    }

    public function __destruct() {
        parent::__destruct();
    }

}

?>